;============================================================================ ; Diese Funktion sucht eine Bytefolge innerhalb einer anderen Bytefolge. Die ; Suche findet dabei »Case-Sensitiv« statt, das heißt, »A« ist ungleich »a«. ; Der verwendete Suchalgorithmus arbeitet mit »3-Phase-PreCheck«, womit so- ; gar auf alten 68000er-Amigas noch ein Datendurchsatz von ca. 130 KByte/Sec ; erreicht werden kann (je nach Auslastung des Multitaskings). ;---------------------------------------------------------------------------- ; Synopsis: position = FindString (Source, SourceLen, Find, FindLen) ; D0* A0! D0 A1! D1 ; ; Eingaben: A0 --> STRPTR auf Adresse der zu durchsuchenden Bytefolge ; D0 --> ULONG Länge der zu durchsuchenden Folge in Byte ; A1 --> STRPTR auf Adresse der zu suchenden Bytefolge ; D1 --> ULONG Länge der zu suchenden Folge in Byte ; ; Ergebnis: D0 --> LONG - die Position, ab welchem Byte der durchsuchten ; Bytefolge die Gesuchte in ihr enthalten ist ; (ACHTUNG: Zählbeginn = 1 !!) ; - ist NULL, wenn die gesuchte Bytefolge nicht in ; der Durchsuchten enthalten ist ; - ist negativ, wenn ein Fehler aufgetreten ist ; (Find-String länger als Source-String) ; ; Bemerkung: Ich habe die Zeiger auf die Bytefolgen als STRPTR deklariert, ; da man diese Funktion wohl meistens für die Suche innerhalb ; von alphanumerischen Zeichenketten benutzen wird. Die Funktion ; kann aber genausogut zum Suchen von nicht druckbaren Zeichen ; benutzt werden, d.h. sie bricht ihre Arbeit nicht etwa beim ; Auftauchen eines 0-Bytes o.ä. ab. Um dies deutlich zu machen, ; rede ich hier auch absichtlich immerzu nur von »Bytefolgen«, ; und nicht etwa von »Strings« oder »Zeichenketten«. ; ; Siehe auch: GetLength() ;============================================================================